#pragma once
#include "pch.h"

extern "C" {
typedef int(APIENTRY* Api_Initialize)(int session, LPCSTR jsonStr);

typedef int(APIENTRY* Api_SendTextMsg)(int auth_code, LPCSTR robot_wxid, LPCSTR to_wxid, LPCSTR msg);

typedef int(APIENTRY* Api_SendTextMsgByteHex)(int auth_code, LPCSTR robot_wxid, LPCSTR to_wxid,
                                              LPCSTR byte_hex);

typedef int(APIENTRY* Api_SendGroupMsgAndAt)(int auth_code, LPCSTR robot_wxid, LPCSTR group_wxid,
                                             LPCSTR member_wxid, LPCSTR member_name, LPCSTR msg);

typedef int(APIENTRY* Api_SendCardMsg)(int auth_code, LPCSTR robot_wxid, LPCSTR to_wxid, LPCSTR card_data);

typedef int(APIENTRY* Api_SendImageMsg)(int auth_code, LPCSTR robot_wxid, LPCSTR to_wxid, LPCSTR path);

typedef int(APIENTRY* Api_SendFileMsg)(int auth_code, LPCSTR robot_wxid, LPCSTR to_wxid, LPCSTR path);

typedef int(APIENTRY* Api_SendEmojiMsg)(int auth_code, LPCSTR robot_wxid, LPCSTR to_wxid, LPCSTR path);

typedef int(APIENTRY* Api_SendVideoMsg)(int auth_code, LPCSTR robot_wxid, LPCSTR to_wxid, LPCSTR path);

typedef int(APIENTRY* Api_SendLinkMsg)(int auth_code, LPCSTR robot_wxid, LPCSTR to_wxid, LPCSTR title,
                                       LPCSTR text, LPCSTR target_url, LPCSTR pic_url, LPCSTR icon_url);

typedef int(APIENTRY* Api_SendMusicMsg)(int auth_code, LPCSTR robot_wxid, LPCSTR to_wxid, LPCSTR name,
                                        int type);

typedef LPCSTR(APIENTRY* Api_GetRobotName)(int auth_code, LPCSTR robot_wxid);

typedef LPCSTR(APIENTRY* Api_GetRobotHeadimgurl)(int auth_code, LPCSTR robot_wxid);

typedef LPCSTR(APIENTRY* Api_GetLoggedAccountList)(int auth_code);

typedef LPCSTR(APIENTRY* Api_GetFriendList)(int auth_code, LPCSTR robot_wxid, BOOL is_refresh);

typedef LPCSTR(APIENTRY* Api_GetGroupList)(int auth_code, LPCSTR robot_wxid, BOOL is_refresh);

typedef LPCSTR(APIENTRY* Api_GetGroupMemberList)(int auth_code, LPCSTR robot_wxid, LPCSTR group_wxid,
                                                 BOOL is_refresh);

typedef LPCSTR(APIENTRY* Api_GetGroupMemberDetailInfo)(int auth_code, LPCSTR robot_wxid, LPCSTR group_wxid,
                                                       LPCSTR member_wxid, BOOL is_refresh);

typedef int(APIENTRY* Api_ReloadPlug)(int auth_code);

typedef int(APIENTRY* Api_DeleteFriend)(int auth_code, LPCSTR robot_wxid, LPCSTR friend_wxid);

typedef int(APIENTRY* Api_ModifyFriendNote)(int auth_code, LPCSTR robot_wxid, LPCSTR friend_wxid,
                                            LPCSTR note);

typedef int(APIENTRY* Api_BuildingGroup)(int auth_code, LPCSTR robot_wxid, LPCSTR friends);

typedef int(APIENTRY* Api_ModifyGroupName)(int auth_code, LPCSTR robot_wxid, LPCSTR group_wxid,
                                           LPCSTR group_name);

typedef int(APIENTRY* Api_ModifyGroupNotice)(int auth_code, LPCSTR robot_wxid, LPCSTR group_wxid,
                                             LPCSTR content);

typedef int(APIENTRY* Api_QuitGroup)(int auth_code, LPCSTR robot_wxid, LPCSTR group_wxid);

typedef int(APIENTRY* Api_RemoveGroupMember)(int auth_code, LPCSTR robot_wxid, LPCSTR group_wxid,
                                             LPCSTR member_wxid);

typedef int(APIENTRY* Api_InviteInGroup)(int auth_code, LPCSTR robot_wxid, LPCSTR group_wxid,
                                         LPCSTR friend_wxid);

typedef int(APIENTRY* Api_AcceptTransfer)(int auth_code, LPCSTR robot_wxid, LPCSTR from_wxid,
                                          LPCSTR json_msg);

typedef int(APIENTRY* Api_AgreeFriendVerify)(int auth_code, LPCSTR robot_wxid, LPCSTR json_msg);

typedef int(APIENTRY* Api_AgreeGroupInvite)(int auth_code, LPCSTR robot_wxid, LPCSTR json_msg);

typedef LPCSTR(APIENTRY* Api_GetAppDirectory)(int auth_code);

typedef int(APIENTRY* Api_AppendLogs)(int auth_code, LPCSTR msg1);

typedef int(APIENTRY* Api_SetFatal)(int auth_code);
}

extern Api_Initialize pApi_Initialize;
extern Api_SendTextMsg pApi_SendTextMsg;
extern Api_SendTextMsgByteHex pApi_SendTextMsgByteHex;
extern Api_SendGroupMsgAndAt pApi_SendGroupMsgAndAt;
extern Api_SendCardMsg pApi_SendCardMsg;
extern Api_SendImageMsg pApi_SendImageMsg;
extern Api_SendFileMsg pApi_SendFileMsg;
extern Api_SendEmojiMsg pApi_SendEmojiMsg;
extern Api_SendVideoMsg pApi_SendVideoMsg;
extern Api_SendLinkMsg pApi_SendLinkMsg;
extern Api_SendMusicMsg pApi_SendMusicMsg;
extern Api_GetRobotName pApi_GetRobotName;
extern Api_GetRobotHeadimgurl pApi_GetRobotHeadimgurl;
extern Api_GetLoggedAccountList pApi_GetLoggedAccountList;
extern Api_GetFriendList pApi_GetFriendList;
extern Api_GetGroupList pApi_GetGroupList;
extern Api_GetGroupMemberList pApi_GetGroupMemberList;
extern Api_GetGroupMemberDetailInfo pApi_GetGroupMemberDetailInfo;
extern Api_ReloadPlug pApi_ReloadPlug;
extern Api_DeleteFriend pApi_DeleteFriend;
extern Api_ModifyFriendNote pApi_ModifyFriendNote;
extern Api_BuildingGroup pApi_BuildingGroup;
extern Api_ModifyGroupName pApi_ModifyGroupName;
extern Api_ModifyGroupNotice pApi_ModifyGroupNotice;
extern Api_QuitGroup pApi_QuitGroup;
extern Api_RemoveGroupMember pApi_RemoveGroupMember;
extern Api_InviteInGroup pApi_InviteInGroup;
extern Api_AcceptTransfer pApi_AcceptTransfer;
extern Api_AgreeFriendVerify pApi_AgreeFriendVerify;
extern Api_AgreeGroupInvite pApi_AgreeGroupInvite;
extern Api_GetAppDirectory pApi_GetAppDirectory;
extern Api_AppendLogs pApi_AppendLogs;
extern Api_SetFatal pApi_SetFatal;

BOOL APIPROC_CreateApiDllProc();
